package com.git.contractmanagement.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用户实体类
 */
@Data
@Accessors(chain = true)
@TableName("user")
public class User {

    /**
     * 用户ID（主键，自增）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户名（唯一，非空）phone
     */
    @TableField("username")
    private String username;

    /**
     * 密码哈希（非空）
     */
    @TableField("password")
    @NotBlank(message = "密码不能为空")
    @Size(min = 6, max = 32, message = "新密码长度需在6-32位之间")
    private String password;

    /**
     * 邮箱（唯一，非空）
     */
    @TableField("email")
    private String email;
    /**
     * 角色（非空）
     */
    public static final String ROLE_USER = "USER";
    public static final String ROLE_ADMIN = "ADMIN";
    @TableField("role")
    private String role;
    /**
     * 注册时间（自动记录）
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;

    /**
     * 最后更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;

    /**
     * 头像
     */
    @TableField(value = "image")
    private String image;

    /**
     * 手机号
     */
    @TableField(value = "phone")
    private String phone;
     /**
     * 单位
     */
    @TableField(value = "unit")
    private String unit;
    /**
     * 身份证号码
     */
    @TableField(value = "identity_card")
    private String identityCard;
    /**
     * 所属行业
     */
    @TableField(value = "industry")
    private String industry;
}
